#pragma once
#include "..\Common\Global.h"

template <typename I,typename O>
class Combinator_Not : public Combinator<I,O>
{
public:
	Combinator_Not(Combinator_Node<I,O>& _left,Combinator_MemoryManager<I,O>* _MM) : left(_left),Combinator<I,O>(_MM){}

	virtual O Parser(I& input)
	{
		O Result(GetMM());
		I temp = input;
		if(O Result1 = left.Parser(input))
		{
			input = temp;
			Result.SetResult(TRUE);
		}
		return Result;
	}
protected:
	Combinator_Node<I,O>& left;
};
